state.name
 [1] "Alabama"        "Alaska"        
 [3] "Arizona"        "Arkansas"      
 [5] "California"     "Colorado"      
 [7] "Connecticut"    "Delaware"      
 [9] "Florida"        "Georgia"       
[11] "Hawaii"         "Idaho"         
[13] "Illinois"       "Indiana"       
[15] "Iowa"           "Kansas"        
[17] "Kentucky"       "Louisiana"     
[19] "Maine"          "Maryland"      
[21] "Massachusetts"  "Michigan"      
[23] "Minnesota"      "Mississippi"   
[25] "Missouri"       "Montana"       
[27] "Nebraska"       "Nevada"        
[29] "New Hampshire"  "New Jersey"    
[31] "New Mexico"     "New York"      
[33] "North Carolina" "North Dakota"  
[35] "Ohio"           "Oklahoma"      
[37] "Oregon"         "Pennsylvania"  
[39] "Rhode Island"   "South Carolina"
[41] "South Dakota"   "Tennessee"     
[43] "Texas"          "Utah"          
[45] "Vermont"        "Virginia"      
[47] "Washington"     "West Virginia" 
[49] "Wisconsin"      "Wyoming"       
# install.packages("maps")
# library(maps)
# x <- map("world", plot=FALSE)
# glimpse(x)
# x$names

SEER China vs others

https://www.rdocumentation.org/packages/bayesTFR/versions/6.1-2/topics/country.names

https://stat.ethz.ch/R-manual/R-devel/library/datasets/html/state.html

Who works on SEER

If you want to see the code used in the analysis please click the code button on the right upper corner or throughout the page.
Select from the tabs below.


Aim

Aim:


Data retriveal from PubMed using EDirect

Articles are downloaded as xml.

Parsed with column specification:
cols(
  PMID = col_integer(),
  year = col_character(),
  Affiliations = col_character()
)
Parsed with column specification:
cols(
  abb = col_character(),
  country = col_character()
)
[1] 6240

At the time of the research the number of articles with ‘SEER Program’[Mesh] formula is 6240.

NA

        
         China Others Sum
  Others    19      0  19
  USA       15    165 180
  Sum       34    165 199

no non-missing arguments to min; returning InfError: time data must either be integer, numeric, POSIXct, Date, difftime, orhms
LS0tCnRpdGxlOiAiQmlibGlvZ3JhcGhpYyBTdHVkaWVzIgpzdWJ0aXRsZTogIlNFRVIgUmVzZWFyY2ggUGVyIENvdW50cmllcyAvIFdobyBpcyBkb2luZyBTRUVSIFJlc2VhcmNoPyIKYXV0aG9yOiAiU2VyZGFyIEJhbGPEsSwgTUQsIFBhdGhvbG9naXN0IgpkYXRlOiAnYHIgZm9ybWF0KFN5cy5EYXRlKCkpYCcKb3V0cHV0OiAKICBodG1sX25vdGVib29rOiAKICAgIGNvZGVfZm9sZGluZzogaGlkZQogICAgZmlnX2NhcHRpb246IHllcwogICAgaGlnaGxpZ2h0OiBrYXRlCiAgICB0aGVtZTogY2VydWxlYW4KICAgIHRvY19mbG9hdDogeWVzCiAgaHRtbF9kb2N1bWVudDogCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUKICAgIGRmX3ByaW50OiBrYWJsZQogICAgZmlnX2NhcHRpb246IHllcwogICAgaGlnaGxpZ2h0OiBrYXRlCiAgICBrZWVwX21kOiB5ZXMKICAgIHRoZW1lOiBjZXJ1bGVhbgogICAgdG9jX2Zsb2F0OiB5ZXMKLS0tCgoKCmBgYHtyIGdsb2JhbF9vcHRpb25zLCBpbmNsdWRlPUZBTFNFfQprbml0cjo6b3B0c19jaHVuayRzZXQoZmlnLndpZHRoID0gMTIsIGZpZy5oZWlnaHQgPSA4LCBmaWcucGF0aCA9ICdmaWd1cmUvJywgZWNobyA9IEZBTFNFLCB3YXJuaW5nID0gRkFMU0UsIG1lc3NhZ2UgPSBGQUxTRSwgZXJyb3IgPSBGQUxTRSwgZXZhbCA9IFRSVUUsIHRpZHkgPSBUUlVFLCBjb21tZW50ID0gTkEpCmBgYAoKYGBge3IgbGlicmFyeSwgaW5jbHVkZT1GQUxTRX0KbGlicmFyeSh0aWR5dmVyc2UpCmBgYAoKCmBgYHtyfQpzdGF0ZS5uYW1lCmBgYAoKCmBgYHtyfQojIGluc3RhbGwucGFja2FnZXMoIm1hcHMiKQojIGxpYnJhcnkobWFwcykKIyB4IDwtIG1hcCgid29ybGQiLCBwbG90PUZBTFNFKQojIGdsaW1wc2UoeCkKIyB4JG5hbWVzCgpgYGAKCmBgYHtyfQppbnN0YWxsLnBhY2thZ2VzKCJyd29ybGRtYXAiKQpsaWJyYXJ5KHJ3b3JsZG1hcCkKdmlnbmV0dGUoJ3J3b3JsZG1hcCcpCmRhdGEoY291bnRyeUV4RGF0YSkKY291bnRyeUV4RGF0YQpgYGAKCgoKCgoKCgoKCgoKU0VFUiBDaGluYSB2cyBvdGhlcnMKCmh0dHBzOi8vd3d3LnJkb2N1bWVudGF0aW9uLm9yZy9wYWNrYWdlcy9iYXllc1RGUi92ZXJzaW9ucy82LjEtMi90b3BpY3MvY291bnRyeS5uYW1lcwoKCmh0dHBzOi8vc3RhdC5ldGh6LmNoL1ItbWFudWFsL1ItZGV2ZWwvbGlicmFyeS9kYXRhc2V0cy9odG1sL3N0YXRlLmh0bWwKCgoKCiMgV2hvIHdvcmtzIG9uIFNFRVIgey50YWJzZXQgLnRhYnNldC1mYWRlIC50YWJzZXQtcGlsbHN9CgpJZiB5b3Ugd2FudCB0byBzZWUgdGhlIGNvZGUgdXNlZCBpbiB0aGUgYW5hbHlzaXMgcGxlYXNlIGNsaWNrIHRoZSBjb2RlIGJ1dHRvbiBvbiB0aGUgcmlnaHQgdXBwZXIgY29ybmVyIG9yIHRocm91Z2hvdXQgdGhlIHBhZ2UuICAKU2VsZWN0IGZyb20gdGhlIHRhYnMgYmVsb3cuCgotLS0KCiMjIEFpbSAKCioqQWltOioqCgoKCi0tLQoKIyMgRGF0YSByZXRyaXZlYWwgZnJvbSBQdWJNZWQgdXNpbmcgRURpcmVjdCAKCkFydGljbGVzIGFyZSBkb3dubG9hZGVkIGFzIGB4bWxgLgoKYGBge3IgU2VhcmNoIFB1Yk1lZCB3cml0ZSBhbGwgZGF0YSBhcyB4bWwsIGV2YWw9RkFMU0UsIGluY2x1ZGU9RkFMU0V9Cm15VGVybSA8LSByc3R1ZGlvYXBpOjp0ZXJtaW5hbENyZWF0ZShzaG93ID0gRkFMU0UpCnJzdHVkaW9hcGk6OnRlcm1pbmFsU2VuZCgKICAgIG15VGVybSwKICAgICJlc2VhcmNoIC1kYiBwdWJtZWQgLXF1ZXJ5IFwiJ1NFRVIgUHJvZ3JhbSdbTWVzaF0KXCIgLWRhdGV0eXBlIFBEQVQgLW1pbmRhdGUgMTgwMCAtbWF4ZGF0ZSAzMDAwIHwgZWZldGNoIC1mb3JtYXQgeG1sID4gZGF0YS9wdWJtZWRfcmVzdWx0X1NFRVJfTWVTSC54bWwgXG4iCikKU3lzLnNsZWVwKDEpCnJlcGVhdCB7CiAgICBTeXMuc2xlZXAoMC4xKQogICAgaWYgKHJzdHVkaW9hcGk6OnRlcm1pbmFsQnVzeShteVRlcm0pID09IEZBTFNFKSB7CiAgICAgICAgcHJpbnQoIkNvZGUgRXhlY3V0ZWQiKQogICAgICAgIGJyZWFrCiAgICB9Cn0KYGBgCgoKCmBgYHtyIGV4dHJhY3Qgam91cm5hbCBuYW1lcyBmcm9tIGFsbCBkYXRhIHhtbCwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KbXlUZXJtIDwtIHJzdHVkaW9hcGk6OnRlcm1pbmFsQ3JlYXRlKHNob3cgPSBGQUxTRSkKcnN0dWRpb2FwaTo6dGVybWluYWxTZW5kKApteVRlcm0sCiJ4dHJhY3QgLWlucHV0IGRhdGEvcHVibWVkX3Jlc3VsdF9TRUVSX01lU0gueG1sIC1wYXR0ZXJuIFB1Ym1lZEFydGljbGUgLXNlcCAnICcgLWRlZiAnbmEnIC1lbGVtZW50IE1lZGxpbmVDaXRhdGlvbi9QTUlEIFB1YkRhdGUvWWVhciBBZmZpbGlhdGlvbj4gZGF0YS9TRUVSX2NvdW50cmllcy5jc3YgXG4iCikKU3lzLnNsZWVwKDEpCnJlcGVhdCB7ClN5cy5zbGVlcCgwLjEpCmlmIChyc3R1ZGlvYXBpOjp0ZXJtaW5hbEJ1c3kobXlUZXJtKSA9PSBGQUxTRSkgewpwcmludCgiQ29kZSBFeGVjdXRlZCIpCmJyZWFrCn0KfQpgYGAKCgpgYGB7cn0KbGlicmFyeShyZWFkcikKU0VFUl9jb3VudHJpZXMgPC0gcmVhZF9kZWxpbSgiZGF0YS9TRUVSX2NvdW50cmllcy5jc3YiLCAKICAgICJcdCIsIGVzY2FwZV9kb3VibGUgPSBGQUxTRSwgY29sX25hbWVzID0gYygiUE1JRCIsICJ5ZWFyIiwgIkFmZmlsaWF0aW9ucyIpLCAKICAgIG5hID0gIk5BIiwgdHJpbV93cyA9IFRSVUUpCiMgVmlldyhTRUVSX2NvdW50cmllcykKYGBgCgpgYGB7cn0KY291bnRyaWVzIDwtIHJlYWRfZGVsaW0oImRhdGEvY291bnRyaWVzLnR4dCIsIGRlbGltID0gInwiLCBjb2xfbmFtZXMgPSBjKCJhYmIiLCAiY291bnRyeSIpKQoKY291bnRyeSA8LSBjb3VudHJpZXMkY291bnRyeQoKY291bnRyeSA8LSBjKGNvdW50cnksIHN0YXRlLm5hbWUpCgpjb3VudHJ5WzgwXSA8LSAiR2VvcmdpYV8iCgpgYGAKCgoKYGBge3J9CiMgU0VFUl9jb3VudHJpZXMgPC0gY2JpbmQoU0VFUl9jb3VudHJpZXMsIHNldE5hbWVzKGxhcHBseShjb3VudHJ5LCBmdW5jdGlvbih4KSB4PU5BKSwgY291bnRyeSkpCgojIG5hbWVzKFNFRVJfY291bnRyaWVzKVsyNTRdIDwtICJHZW9yZ2lhVVNBIgoKCmBgYAoKYGBge3J9CiMgZ3JlcGwocGF0dGVybiA9ICJDaGluYSIsIHggPSBTRUVSX2NvdW50cmllcyRBZmZpbGlhdGlvbnMpCmBgYAoKCmBgYHtyfQojIGRlbmVtZTEgPC0gZ3JlcGwocGF0dGVybiA9IGNvdW50cnlbNDRdLCB4ID0gU0VFUl9jb3VudHJpZXMkQWZmaWxpYXRpb25zKQogICAgCiMgZGVuZW1lMiA8LSBzYXBwbHkoY291bnRyeSwgZnVuY3Rpb24oeCkgZ3JlcGwoeCwgU0VFUl9jb3VudHJpZXMkQWZmaWxpYXRpb25zKSkKCiMgc3VtKGRlbmVtZTEgIT0gZGVuZW1lMlssNDRdKQoKYGBgCgpgYGB7cn0KIyBkZW5lbWUyIDwtIGFzLmRhdGEuZnJhbWUoZGVuZW1lMikKCiMgc3VtKGRlbmVtZTIkVHVya2V5KQpgYGAKCmBgYHtyfQpTRUVSX2NvdW50cmllcyA8LSBjYmluZChTRUVSX2NvdW50cmllcywgc2FwcGx5KGNvdW50cnksIGZ1bmN0aW9uKHgpIGdyZXBsKHgsIFNFRVJfY291bnRyaWVzJEFmZmlsaWF0aW9ucykpKQpgYGAKCgpgYGB7cn0KZGltKFNFRVJfY291bnRyaWVzKVsxXQpgYGAKCkF0IHRoZSB0aW1lIG9mIHRoZSByZXNlYXJjaCB0aGUgbnVtYmVyIG9mIGFydGljbGVzIHdpdGggJ1NFRVIgUHJvZ3JhbSdbTWVzaF0gZm9ybXVsYSBpcyBgciBkaW0oU0VFUl9jb3VudHJpZXMpWzFdYC4KCmBgYHtyfQojIGRlbmVtZSA8LSBjb2xTdW1zKFNFRVJfY291bnRyaWVzWywtKDE6MyldKQoKIyBkZW5lbWUgPC0gYXMuZGF0YS5mcmFtZShkZW5lbWUpCgojIGRlbmVtZSA8LSByb3duYW1lc190b19jb2x1bW4oZGVuZW1lLCB2YXIgPSAiY291bnRyaWVzIikKCiMgbmFtZXMoZGVuZW1lKSA8LSBjKCJjb3VudHJpZXMiLCAibnVtYmVyIikKCiMgZGVuZW1lICU+JSBhcnJhbmdlKGRlc2MobnVtYmVyKSkKCgpgYGAKCmBgYHtyfQpTRUVSX2NvdW50cmllc1tTRUVSX2NvdW50cmllcyA9PSBGQUxTRV0gPC0gMAoKU0VFUl9jb3VudHJpZXNbU0VFUl9jb3VudHJpZXMgPT0gVFJVRV0gPC0gMQoKYGBgCgoKCmBgYHtyfQpjb3VudHJ5VG90YWxzIDwtIFNFRVJfY291bnRyaWVzICU+JSAKICBzZWxlY3QoLWMoMTozKSkgJT4lIAogIHN1bW1hcmlzZV9hbGwoZnVucyhzdW0pKSAKCmNvdW50cnlUb3RhbHNbd2hpY2goY291bnRyeVRvdGFscz4wKV0KCnB1Ymxpc2hlckNvdW50cmllcyA8LSBuYW1lcyhjb3VudHJ5VG90YWxzW3doaWNoKGNvdW50cnlUb3RhbHM+MCldKQoKU0VFUl9jb3VudHJpZXMgPC0gU0VFUl9jb3VudHJpZXMgJT4lIAogIHNlbGVjdChjKDE6MywgcHVibGlzaGVyQ291bnRyaWVzKSkKCmBgYAoKCgpgYGB7cn0KZGVuZW1lIDwtIFNFRVJfY291bnRyaWVzICU+JSAKICBnYXRoZXIoa2V5ID0gIkNvdW50cnkiLCB2YWx1ZSA9ICJOdW1iZXIiLCAtYygxOjMpKSAlPiUgCiAgZ3JvdXBfYnkoQ291bnRyeSwgeWVhcikgJT4lIAogIHN1bW1hcmlzZSh0b3RhbCA9IHN1bShOdW1iZXIpKQpgYGAKCgpgYGB7cn0KZGVuZW1lICU+JSAKICBmaWx0ZXIoeWVhciAhPSAibmEiKSAlPiUKICBmaWx0ZXIoeWVhciAhPSAiMjAxNyIpICU+JSAKICBmaWx0ZXIoeWVhciAhPSAiMjAxOCIpICU+JSAKZ2dwbG90KCkgKwogIGFlcyh5ID0gdG90YWwsIHggPSB5ZWFyLCBncm91cCA9IENvdW50cnksIGNvbG9yID0gQ291bnRyeSkgKwogIGdlb21fbGluZSgpICsgCiAgZ3VpZGVzKGZpbGw9RkFMU0UsIGNvbG9yPUZBTFNFKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxKSkKYGBgCgoKYGBge3J9ClVTQW5hbWVzIDwtIG5hbWVzKFNFRVJfY291bnRyaWVzKSAlaW4lIHN0YXRlLm5hbWUKCk90aGVycyA8LSBzZXRkaWZmKG5hbWVzKFNFRVJfY291bnRyaWVzWy1jKDE6MyldKSwgYyhVU0FuYW1lcywiVW5pdGVkIFN0YXRlcyIsICJDaGluYSIpKQoKCmRlbmVtZTIgPC0gU0VFUl9jb3VudHJpZXMgJT4lIAogIG11dGF0ZSgKICAgIHN1bVVTQSA9IHJvd1N1bXMoCiAgICAgIHNlbGVjdCguLCBvbmVfb2YoVVNBbmFtZXMpLCBgVW5pdGVkIFN0YXRlc2ApCiAgICAgICkKICAgICkgJT4lIAptdXRhdGUoCiAgICBzdW1PdGhlcnMgPSByb3dTdW1zKAogICAgICBzZWxlY3QoLiwgb25lX29mKE90aGVycykpCiAgICAgICkKICAgICkgJT4lIAogIHNlbGVjdChQTUlELCB5ZWFyLCBDaGluYSwgVVNBID0gc3VtVVNBLCBPdGhlcnMgPSBzdW1PdGhlcnMpCgpgYGAKCmBgYHtyfQpkZW5lbWUzIDwtIGRlbmVtZTIgJT4lIAogIGdhdGhlcihrZXkgPSAiQ291bnRyeSIsIHZhbHVlID0gIk51bWJlciIsIC1jKDE6MikpICU+JSAKICBncm91cF9ieShQTUlELCBDb3VudHJ5LCB5ZWFyKSAlPiUgCiAgc3VtbWFyaXNlKHRvdGFsID0gc3VtKE51bWJlcikpICU+JSAKICBmaWx0ZXIoeWVhciAhPSAibmEiKSAlPiUKICBmaWx0ZXIoeWVhciAhPSAiMjAxNyIpICU+JSAKICBmaWx0ZXIoeWVhciAhPSAiMjAxOCIpICU+JSAKICBmaWx0ZXIodG90YWwgIT0gIjAiKQpgYGAKCgpgYGB7cn0KIyB3aGljaChkdXBsaWNhdGVkKGRlbmVtZTMkUE1JRCkpCiMgd2hpY2goZHVwbGljYXRlZChkZW5lbWUzJFBNSUQpKS0xCgojIGRlbmVtZTNbd2hpY2goZHVwbGljYXRlZChkZW5lbWUzJFBNSUQpKSxdCgp0b2dldGhlciA8LSBiaW5kX2NvbHMoCkZpcnN0ID0gZGVuZW1lMyRDb3VudHJ5W3doaWNoKGR1cGxpY2F0ZWQoZGVuZW1lMyRQTUlEKSldLApTZWNvbmQgPSBkZW5lbWUzJENvdW50cnlbd2hpY2goZHVwbGljYXRlZChkZW5lbWUzJFBNSUQpKS0xXQopCgp0YWJsZSh0b2dldGhlciRGaXJzdCwgdG9nZXRoZXIkU2Vjb25kKSAlPiUgYWRkbWFyZ2lucygpCmJpbmRfY29scygKCmBgYAoKCgpgYGB7cn0KZGVuZW1lNCA8LSBkZW5lbWUyICU+JSAKICBnYXRoZXIoa2V5ID0gIkNvdW50cnkiLCB2YWx1ZSA9ICJOdW1iZXIiLCAtYygxOjIpKSAlPiUgCiAgZ3JvdXBfYnkoQ291bnRyeSwgeWVhcikgJT4lIAogIHN1bW1hcmlzZSh0b3RhbCA9IHN1bShOdW1iZXIpKSAlPiUgCiAgZmlsdGVyKHllYXIgIT0gIm5hIikgJT4lCiAgZmlsdGVyKHllYXIgIT0gIjIwMTciKSAlPiUgCiAgZmlsdGVyKHllYXIgIT0gIjIwMTgiKSAlPiUgCiAgZmlsdGVyKHRvdGFsICE9ICIwIikKYGBgCgoKCmBgYHtyfQpkZW5lbWU0ICU+JSAKZ2dwbG90KCkgKwogIGFlcyh5ID0gdG90YWwsIHggPSB5ZWFyLCBncm91cCA9IENvdW50cnksIGNvbG9yID0gQ291bnRyeSkgKwogIGdlb21fbGluZSgpICsgCiAgIyBndWlkZXMoZmlsbD1GQUxTRSwgY29sb3I9RkFMU0UpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEpKQpgYGAKCgoKPGlmcmFtZSBzcmM9Imh0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS9wbHVnaW5zL3Bvc3QucGhwP2hyZWY9aHR0cHMlM0ElMkYlMkZ3d3cuZmFjZWJvb2suY29tJTJGc2VyZGFyYmFsY2ltZHBhdGhvbG9naXN0JTJGcG9zdHMlMkYxOTE5NzA2NTgxNDc5MDA5JndpZHRoPTUwMCIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI1MjkiIHN0eWxlPSJib3JkZXI6bm9uZTtvdmVyZmxvdzpoaWRkZW4iIHNjcm9sbGluZz0ibm8iIGZyYW1lYm9yZGVyPSIwIiBhbGxvd1RyYW5zcGFyZW5jeT0idHJ1ZSIgYWxsb3c9ImVuY3J5cHRlZC1tZWRpYSI+PC9pZnJhbWU+CgoKPGJsb2NrcXVvdGUgY2xhc3M9InR3aXR0ZXItdHdlZXQiIGRhdGEtbGFuZz0iZW4iPjxwIGxhbmc9ImVuIiBkaXI9Imx0ciI+V2hpbGUgaGVscGluZyB0aGUgcHJlcGFyYXRpb24gb2YgPGEgaHJlZj0iaHR0cHM6Ly90d2l0dGVyLmNvbS9oYXNodGFnL1BCUGF0aD9zcmM9aGFzaCZhbXA7cmVmX3NyYz10d3NyYyU1RXRmdyI+I1BCUGF0aDwvYT4gSm91cm5hbCBXYXRjaCAoPGEgaHJlZj0iaHR0cHM6Ly90LmNvL1dpQnNKaXh6bGMiPmh0dHBzOi8vdC5jby9XaUJzSml4emxjPC9hPikgIEkgdGhvdWdodCB0aGF0IG1hbnkgU0VFUiA8YSBocmVmPSJodHRwczovL3R3aXR0ZXIuY29tL05DSUNhbmNlclN0YXRzP3JlZl9zcmM9dHdzcmMlNUV0ZnciPkBOQ0lDYW5jZXJTdGF0czwvYT4gc3R1ZGllcyBhcmUgZnJvbSBDaGluYS4gU28gdXNpbmcgZWRpcmVjdCA8YSBocmVmPSJodHRwczovL3R3aXR0ZXIuY29tL05DQkk/cmVmX3NyYz10d3NyYyU1RXRmdyI+QE5DQkk8L2E+IGFuZCA8YSBocmVmPSJodHRwczovL3R3aXR0ZXIuY29tL2hhc2h0YWcvUlN0YXRzP3NyYz1oYXNoJmFtcDtyZWZfc3JjPXR3c3JjJTVFdGZ3Ij4jUlN0YXRzPC9hPiBJIGRyYXcgdGhlIGF0dGFjaGVkIGdyYXBoLiBXaGF0IGRvIHlvdSB0aGluaz8gRG8gQ2hpbmVzZSBkbyByZXNlYXJjaCBvbiBTRUVSIHRoYXQgbXVjaD8gPGEgaHJlZj0iaHR0cHM6Ly90LmNvLzNPcDVyOW9mYksiPnBpYy50d2l0dGVyLmNvbS8zT3A1cjlvZmJLPC9hPjwvcD4mbWRhc2g7IFNlcmRhciBCYWxjxLEgKEBzZXJkYXJiYWxjaSkgPGEgaHJlZj0iaHR0cHM6Ly90d2l0dGVyLmNvbS9zZXJkYXJiYWxjaS9zdGF0dXMvMTA0ODY2MzMwMjkxNjc4ODIyND9yZWZfc3JjPXR3c3JjJTVFdGZ3Ij5PY3RvYmVyIDYsIDIwMTg8L2E+PC9ibG9ja3F1b3RlPjxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3BsYXRmb3JtLnR3aXR0ZXIuY29tL3dpZGdldHMuanMiIGNoYXJzZXQ9InV0Zi04Ij48L3NjcmlwdD4KCgpgYGB7cn0KcCA8LSBkZW5lbWU0ICU+JSAKZ2dwbG90KCkgKwogIGFlcyh5ID0gdG90YWwsIHggPSB5ZWFyLCBncm91cCA9IENvdW50cnksIGNvbG9yID0gQ291bnRyeSkgKwogIGdlb21fbGluZSgpICsgCiAgIyBndWlkZXMoZmlsbD1GQUxTRSwgY29sb3I9RkFMU0UpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEpKQoKCmBgYAoKCgpgYGB7cn0KCgogIApgYGAKCgoKCgoKCgoKCgoKPCEtLSBgYGB7ciBTZWFyY2ggUHViTWVkIHdyaXRlIDIwMTggZGF0YSBhcyB4bWwsIGV2YWw9RkFMU0UsIGluY2x1ZGU9RkFMU0V9IC0tPgo8IS0tIG15VGVybSA8LSByc3R1ZGlvYXBpOjp0ZXJtaW5hbENyZWF0ZShzaG93ID0gRkFMU0UpIC0tPgo8IS0tIHJzdHVkaW9hcGk6OnRlcm1pbmFsU2VuZCggLS0+CjwhLS0gICAgIG15VGVybSwgLS0+CjwhLS0gICAgICJlc2VhcmNoIC1kYiBwdWJtZWQgLXF1ZXJ5IFwiVHVya2V5W0FmZmlsaWF0aW9uXVwiIC1kYXRldHlwZSBQREFUIC1taW5kYXRlIDIwMTggLW1heGRhdGUgMzAwMCB8IGVmZXRjaCAtZm9ybWF0IHhtbCA+IGRhdGEvVHVya2V5XzIwMTgueG1sIFxuIiAtLT4KPCEtLSApIC0tPgo8IS0tIFN5cy5zbGVlcCgxKSAtLT4KPCEtLSByZXBlYXQgeyAtLT4KPCEtLSAgICAgU3lzLnNsZWVwKDAuMSkgLS0+CjwhLS0gICAgIGlmIChyc3R1ZGlvYXBpOjp0ZXJtaW5hbEJ1c3kobXlUZXJtKSA9PSBGQUxTRSkgeyAtLT4KPCEtLSAgICAgICAgIHByaW50KCJDb2RlIEV4ZWN1dGVkIikgLS0+CjwhLS0gICAgICAgICBicmVhayAtLT4KPCEtLSAgICAgfSAtLT4KPCEtLSB9IC0tPgo8IS0tIGBgYCAtLT4KCgoKCjwhLS0gYGBge3IgU2VhcmNoIFB1Yk1lZCB3cml0ZSBhbGwgZGF0YSBhcyB4bWwsIGV2YWw9RkFMU0UsIGluY2x1ZGU9RkFMU0V9IC0tPgo8IS0tIG15VGVybSA8LSByc3R1ZGlvYXBpOjp0ZXJtaW5hbENyZWF0ZShzaG93ID0gRkFMU0UpIC0tPgo8IS0tIHJzdHVkaW9hcGk6OnRlcm1pbmFsU2VuZCggLS0+CjwhLS0gICAgIG15VGVybSwgLS0+CjwhLS0gICAgICJlc2VhcmNoIC1kYiBwdWJtZWQgLXF1ZXJ5IFwiVHVya2V5W0FmZmlsaWF0aW9uXVwiIC1kYXRldHlwZSBQREFUIC1taW5kYXRlIDE4MDAgLW1heGRhdGUgMzAwMCB8IGVmZXRjaCAtZm9ybWF0IHhtbCA+IGRhdGEvVHVya2V5X2FsbC54bWwgXG4iIC0tPgo8IS0tICkgLS0+CjwhLS0gU3lzLnNsZWVwKDEpIC0tPgo8IS0tIHJlcGVhdCB7IC0tPgo8IS0tICAgICBTeXMuc2xlZXAoMC4xKSAtLT4KPCEtLSAgICAgaWYgKHJzdHVkaW9hcGk6OnRlcm1pbmFsQnVzeShteVRlcm0pID09IEZBTFNFKSB7IC0tPgo8IS0tICAgICAgICAgcHJpbnQoIkNvZGUgRXhlY3V0ZWQiKSAtLT4KPCEtLSAgICAgICAgIGJyZWFrIC0tPgo8IS0tICAgICB9IC0tPgo8IS0tIH0gLS0+CjwhLS0gYGBgIC0tPgoKCgoKCjwhLS0gYGBge3IgU2VhcmNoIFB1Yk1lZCBnZXQgMjAxOCBkYXRhIG9uIHRoZSBmbHksIGV2YWw9RkFMU0UsIGluY2x1ZGU9RkFMU0V9IC0tPgo8IS0tIG15VGVybSA8LSByc3R1ZGlvYXBpOjp0ZXJtaW5hbENyZWF0ZShzaG93ID0gRkFMU0UpIC0tPgo8IS0tIHJzdHVkaW9hcGk6OnRlcm1pbmFsU2VuZCggLS0+CjwhLS0gICAgIG15VGVybSwgLS0+CjwhLS0gICAgICJlc2VhcmNoIC1kYiBwdWJtZWQgLXF1ZXJ5IFwiVHVya2V5W0FmZmlsaWF0aW9uXVwiIC1kYXRldHlwZSBQREFUIC1taW5kYXRlIDIwMTggLW1heGRhdGUgMzAwMCB8IGVmZXRjaCAtZm9ybWF0IHhtbCB8IHh0cmFjdCAgLXBhdHRlcm4gUHVibWVkQXJ0aWNsZSAtZWxlbWVudCBNZWRsaW5lQ2l0YXRpb24vUE1JRCBQdWJEYXRlL1llYXIgSm91cm5hbC9JU1NOIElTT0FiYnJldmlhdGlvbj4gZGF0YS9vbnRoZWZseV9UdXJrZXlfMjAxOC5jc3YgXG4iIC0tPgo8IS0tICkgLS0+CjwhLS0gU3lzLnNsZWVwKDEpIC0tPgo8IS0tIHJlcGVhdCB7IC0tPgo8IS0tICAgICBTeXMuc2xlZXAoMC4xKSAtLT4KPCEtLSAgICAgaWYgKHJzdHVkaW9hcGk6OnRlcm1pbmFsQnVzeShteVRlcm0pID09IEZBTFNFKSB7IC0tPgo8IS0tICAgICAgICAgcHJpbnQoIkNvZGUgRXhlY3V0ZWQiKSAtLT4KPCEtLSAgICAgICAgIGJyZWFrIC0tPgo8IS0tICAgICB9IC0tPgo8IS0tIH0gLS0+CjwhLS0gYGBgIC0tPgoKCgo8IS0tIGBgYHtyIFNlYXJjaCBQdWJNZWQgZ2V0IGFsbCBkYXRhIG9uIHRoZSBmbHksIGV2YWw9RkFMU0UsIGluY2x1ZGU9RkFMU0V9IC0tPgo8IS0tIG15VGVybSA8LSByc3R1ZGlvYXBpOjp0ZXJtaW5hbENyZWF0ZShzaG93ID0gRkFMU0UpIC0tPgo8IS0tIHJzdHVkaW9hcGk6OnRlcm1pbmFsU2VuZCggLS0+CjwhLS0gICAgIG15VGVybSwgLS0+CjwhLS0gICAgICJlc2VhcmNoIC1kYiBwdWJtZWQgLXF1ZXJ5IFwiVHVya2V5W0FmZmlsaWF0aW9uXVwiIC1kYXRldHlwZSBQREFUIC1taW5kYXRlIDE4MDAgLW1heGRhdGUgMzAwMCB8IGVmZXRjaCAtZm9ybWF0IHhtbCB8IHh0cmFjdCAgLXBhdHRlcm4gUHVibWVkQXJ0aWNsZSAtZWxlbWVudCBNZWRsaW5lQ2l0YXRpb24vUE1JRCBQdWJEYXRlL1llYXIgSm91cm5hbC9JU1NOIElTT0FiYnJldmlhdGlvbj4gZGF0YS9vbnRoZWZseV9UdXJrZXlfYWxsLmNzdiBcbiIgLS0+CjwhLS0gKSAtLT4KPCEtLSBTeXMuc2xlZXAoMSkgLS0+CjwhLS0gcmVwZWF0IHsgLS0+CjwhLS0gICAgIFN5cy5zbGVlcCgwLjEpIC0tPgo8IS0tICAgICBpZiAocnN0dWRpb2FwaTo6dGVybWluYWxCdXN5KG15VGVybSkgPT0gRkFMU0UpIHsgLS0+CjwhLS0gICAgICAgICBwcmludCgiQ29kZSBFeGVjdXRlZCIpIC0tPgo8IS0tICAgICAgICAgYnJlYWsgLS0+CjwhLS0gICAgIH0gLS0+CjwhLS0gfSAtLT4KPCEtLSBgYGAgLS0+CgoKCjwhLS0gSm91cm5hbCBOYW1lcyBhcmUgZXh0cmFjdGVkIGZyb20geG1sLiAtLT4KCgoKPCEtLSBgYGB7ciBleHRyYWN0IGpvdXJuYWwgbmFtZXMgZnJvbSAyMDE4IHhtbCwgZXZhbD1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgaW5jbHVkZT1GQUxTRX0gLS0+CjwhLS0gbXlUZXJtIDwtIHJzdHVkaW9hcGk6OnRlcm1pbmFsQ3JlYXRlKHNob3cgPSBGQUxTRSkgLS0+CjwhLS0gcnN0dWRpb2FwaTo6dGVybWluYWxTZW5kKCAtLT4KPCEtLSBteVRlcm0sIC0tPgo8IS0tICJ4dHJhY3QgLWlucHV0IGRhdGEvVHVya2V5XzIwMTgueG1sIC1wYXR0ZXJuIFB1Ym1lZEFydGljbGUgLWVsZW1lbnQgTWVkbGluZUNpdGF0aW9uL1BNSUQgUHViRGF0ZS9ZZWFyIEpvdXJuYWwvSVNTTiBJU09BYmJyZXZpYXRpb24gPiBkYXRhL1R1cmtleTIwMTguY3N2IFxuIiAtLT4KPCEtLSApIC0tPgo8IS0tIFN5cy5zbGVlcCgxKSAtLT4KPCEtLSByZXBlYXQgeyAtLT4KPCEtLSBTeXMuc2xlZXAoMC4xKSAtLT4KPCEtLSBpZiAocnN0dWRpb2FwaTo6dGVybWluYWxCdXN5KG15VGVybSkgPT0gRkFMU0UpIHsgLS0+CjwhLS0gcHJpbnQoIkNvZGUgRXhlY3V0ZWQiKSAtLT4KPCEtLSBicmVhayAtLT4KPCEtLSB9IC0tPgo8IS0tIH0gLS0+CjwhLS0gYGBgIC0tPgoKCjwhLS0gYGBge3IgZXh0cmFjdCBqb3VybmFsIG5hbWVzIGZyb20gYWxsIGRhdGEgeG1sLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfSAtLT4KPCEtLSBteVRlcm0gPC0gcnN0dWRpb2FwaTo6dGVybWluYWxDcmVhdGUoc2hvdyA9IEZBTFNFKSAtLT4KPCEtLSByc3R1ZGlvYXBpOjp0ZXJtaW5hbFNlbmQoIC0tPgo8IS0tIG15VGVybSwgLS0+CjwhLS0gInh0cmFjdCAtaW5wdXQgZGF0YS9UdXJrZXlfYWxsLnhtbCAtcGF0dGVybiBQdWJtZWRBcnRpY2xlIC1zZXAgJyAnIC1kZWYgJ25hJyAtZWxlbWVudCBNZWRsaW5lQ2l0YXRpb24vUE1JRCBKb3VybmFsL0lTU04gSVNPQWJicmV2aWF0aW9uIFB1YkRhdGUvWWVhciA+IGRhdGEvVHVya2V5QWxsLmNzdiBcbiIgLS0+CjwhLS0gKSAtLT4KPCEtLSBTeXMuc2xlZXAoMSkgLS0+CjwhLS0gcmVwZWF0IHsgLS0+CjwhLS0gU3lzLnNsZWVwKDAuMSkgLS0+CjwhLS0gaWYgKHJzdHVkaW9hcGk6OnRlcm1pbmFsQnVzeShteVRlcm0pID09IEZBTFNFKSB7IC0tPgo8IS0tIHByaW50KCJDb2RlIEV4ZWN1dGVkIikgLS0+CjwhLS0gYnJlYWsgLS0+CjwhLS0gfSAtLT4KPCEtLSB9IC0tPgo8IS0tIGBgYCAtLT4KCgoKPCEtLSAtLS0tIC0tPgoKCjwhLS0gIyMgUmV0cmlldmFsIG9mIERhdGEgb2YgUHJvcGVydGllcyBvZiBKb3VybmFscyAtLT4KCgoKPCEtLSBbbmxtY2F0YWxvZ19yZXN1bHRfam91cm5hbHNfcG1jLnhtbF0oaHR0cHM6Ly93d3cubmNiaS5ubG0ubmloLmdvdi9wb3J0YWwvdXRpbHMvZmlsZV9iYWNrZW5kLmNnaT9EYj1ubG1jYXRhbG9nJkhpc3RvcnlJZD1OQ0lEXzFfNjk3NTUyNzhfMTMwLjE0LjE4Ljk3XzU1NTVfMTUzNDU4NTkzNF8zNTkwNjA2NzgzXzBNZXRBMF9TX0hTdG9yZSZRdWVyeUtleT0yJlNvcnQ9UHViRGF0ZSZGaWx0ZXI9YWxsJkNvbXBsZXRlUmVzdWx0Q291bnQ9MjU1OSZNb2RlPWZpbGUmVmlldz14bWwmcCRsPUVtYWlsJnBvcnRhbFNuYXBzaG90PSUyRnByb2plY3RzJTJGZW50cmV6JTJGcHVibWVkJTJGUHViTWVkR3JvdXBAMS4xMzYmQmFzZVVybD0mUG9ydE5hbWU9bGl2ZSZSb290VGFnPU5MTUNhdGFsb2dSZWNvcmRTZXQmRG9jVHlwZT1OTE1DYXRhbG9nUmVjb3JkU2V0JTIwUFVCTElDJTIwJTIyLSUyRiUyRk5MTSUyRiUyRkRURCUyME5MTUNhdGFsb2dSZWNvcmRTZXQsJTIwMXN0JTIwSnVuZSUyMDIwMTclMkYlMkZFTiUyMiUyMCUyMmh0dHBzOi8vd3d3Lm5sbS5uaWguZ292L2RhdGFiYXNlcy9kdGQvbmxtY2F0YWxvZ3JlY29yZHNldF8xNzA2MDEuZHRkJTIyJkZpbGVOYW1lPSZDb250ZW50VHlwZT14bWwpIC0tPgoKCjwhLS0gW25sbWNhdGFsb2dfcmVzdWx0X2N1cnJlbnRseWluZGV4ZWQueG1sXShodHRwczovL3d3dy5uY2JpLm5sbS5uaWguZ292L3BvcnRhbC91dGlscy9maWxlX2JhY2tlbmQuY2dpP0RiPW5sbWNhdGFsb2cmSGlzdG9yeUlkPU5DSURfMV82OTc1NTI3OF8xMzAuMTQuMTguOTdfNTU1NV8xNTM0NTg1OTM0XzM1OTA2MDY3ODNfME1ldEEwX1NfSFN0b3JlJlF1ZXJ5S2V5PTEmU29ydD1QdWJEYXRlJkZpbHRlcj1hbGwmQ29tcGxldGVSZXN1bHRDb3VudD01MjQyJk1vZGU9ZmlsZSZWaWV3PXhtbCZwJGw9RW1haWwmcG9ydGFsU25hcHNob3Q9JTJGcHJvamVjdHMlMkZlbnRyZXolMkZwdWJtZWQlMkZQdWJNZWRHcm91cEAxLjEzNiZCYXNlVXJsPSZQb3J0TmFtZT1saXZlJlJvb3RUYWc9TkxNQ2F0YWxvZ1JlY29yZFNldCZEb2NUeXBlPU5MTUNhdGFsb2dSZWNvcmRTZXQlMjBQVUJMSUMlMjAlMjItJTJGJTJGTkxNJTJGJTJGRFREJTIwTkxNQ2F0YWxvZ1JlY29yZFNldCwlMjAxc3QlMjBKdW5lJTIwMjAxNyUyRiUyRkVOJTIyJTIwJTIyaHR0cHM6Ly93d3cubmxtLm5paC5nb3YvZGF0YWJhc2VzL2R0ZC9ubG1jYXRhbG9ncmVjb3Jkc2V0XzE3MDYwMS5kdGQlMjImRmlsZU5hbWU9JkNvbnRlbnRUeXBlPXhtbCkgLS0+CgoKPCEtLSBbc2NpbWFnb2pyMjAxNy5jc3ZdKGh0dHBzOi8vd3d3LnNjaW1hZ29qci5jb20vam91cm5hbHJhbmsucGhwP291dD14bHMpIC0tPgoKPCEtLSBbc2NpbWFnb2pyMjAxNy13b3MuY3N2XShodHRwczovL3d3dy5zY2ltYWdvanIuY29tL2pvdXJuYWxyYW5rLnBocD93b3M9dHJ1ZSZvdXQ9eGxzKSAtLT4KCgo8IS0tICFbXShpbWFnZXMvc2NpZGF0YS5wbmcpIC0tPgoKCgoKCjwhLS0gLS0tIC0tPgoKCgoKCgo8IS0tICMjIEFuYWx5c2lzIC0tPgoKPCEtLSBgYGB7ciBPcmdhbml6ZSBKb3VybmFsIERhdGEgMSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0gLS0+CjwhLS0gbGlicmFyeSh0aWR5dmVyc2UpIC0tPgo8IS0tIGxpYnJhcnkocmVhZHIpIC0tPgoKPCEtLSBUdXJrZXlBbGwgPC0gcmVhZF9kZWxpbSgiZGF0YS9UdXJrZXlBbGwuY3N2IiwgIC0tPgo8IS0tICAgICAiXHQiLCBlc2NhcGVfZG91YmxlID0gRkFMU0UsIGNvbF9uYW1lcyA9IEZBTFNFLCAtLT4KPCEtLSAgICAgbmEgPSAibmEiLCB0cmltX3dzID0gVFJVRSkgLS0+Cgo8IS0tIG5hbWVzKFR1cmtleUFsbCkgPC0gYygiUE1JRCIsICJJU1NOIiwgIkpvdXJuYWxOYW1lIiwgIlllYXIiKSAtLT4KCjwhLS0gIyBkaW0oVHVya2V5QWxsKVsxXSAtLT4KCjwhLS0gIyBtaW4oVHVya2V5QWxsWyw0XSwgbmEucm0gPSBUUlVFKSAtLT4KCjwhLS0gIyBtYXgoVHVya2V5QWxsWyw0XSwgbmEucm0gPSBUUlVFKSAtLT4KCjwhLS0gIyBnbGltcHNlKFR1cmtleUFsbCkgLS0+Cgo8IS0tIGBgYCAtLT4KCgoKPCEtLSBgYGB7ciBPcmdhbml6ZSBKb3VybmFsIERhdGEgMn0gLS0+CjwhLS0gdW5pcXVlSm91cm5hbHMgPC0gVHVya2V5QWxsICU+JSAgLS0+CjwhLS0gICAgIHNlbGVjdChKb3VybmFsTmFtZSwgSVNTTikgJT4lICAtLT4KPCEtLSAgICAgdW5pcXVlKCkgLS0+Cgo8IS0tICMgZGltKHVuaXF1ZUpvdXJuYWxzKVsxXSAtLT4KCjwhLS0gYGBgIC0tPgoKCjwhLS0gYGBge3IgT3JnYW5pemUgSm91cm5hbCBEYXRhIDN9IC0tPgoKPCEtLSBUdXJrZXlBbGwyIDwtIFR1cmtleUFsbCAlPiUgIC0tPgo8IS0tICAgICBtdXRhdGUoSm91cm5hbCA9IHBhc3RlKEpvdXJuYWxOYW1lLCBJU1NOLCBzZXAgPSAiIElTU04gIikpIC0tPgoKPCEtLSBBcnRpY2xlc0J5WWVhciA8LSBUdXJrZXlBbGwyICU+JSAgLS0+CjwhLS0gICAgIGdyb3VwX2J5KEpvdXJuYWwsIFllYXIpICU+JSAgLS0+CjwhLS0gICAgIHN1bW1hcmlzZShuID0gbigpKSAtLT4KCjwhLS0gQXJ0aWNsZXNCeVllYXIgPC0gQXJ0aWNsZXNCeVllYXIgJT4lICAtLT4KPCEtLSAgICAgc3ByZWFkKGtleSA9IFllYXIsIHZhbHVlID0gbikgLS0+Cgo8IS0tIFR1cmtleUFsbDIgPC0gVHVya2V5QWxsMiAlPiUgIC0tPgo8IS0tICAgICBzZWxlY3QoSm91cm5hbCwgSm91cm5hbE5hbWUsIElTU04pICU+JSAgLS0+CjwhLS0gICAgIHVuaXF1ZSgpIC0tPgoKPCEtLSBBcnRpY2xlc0J5WWVhciA8LSBsZWZ0X2pvaW4oQXJ0aWNsZXNCeVllYXIsIFR1cmtleUFsbDIsIGJ5ID0gIkpvdXJuYWwiKSAgLS0+Cgo8IS0tIEFydGljbGVzQnlZZWFyIDwtIEFydGljbGVzQnlZZWFyICU+JSAtLT4KPCEtLSAgICAgc2VsZWN0KCAtLT4KPCEtLSAgICAgSm91cm5hbCwgSm91cm5hbE5hbWUsIElTU04sIGV2ZXJ5dGhpbmcoKSAtLT4KPCEtLSAgICAgKSAtLT4KCjwhLS0gYGBgIC0tPgoKCjwhLS0gYGBge3Igc2NpbWFnb2pyMjAxN30gLS0+Cgo8IS0tIGBgYCAtLT4KCgoKPCEtLSAtZWxlbWVudCBNZWRsaW5lVEEgIE5MTUNhdGFsb2dSZWNvcmQvTmxtVW5pcXVlSUQgLWRlZiAnbmEnIC1zZXAgJ1x0JyAtYmxvY2sgVGl0bGVBbHRlcm5hdGUvVGl0bGUgICAtZWxlbWVudCBUaXRsZUFsdGVybmF0ZS9UaXRsZSAgICAtLT4KCjwhLS0gInh0cmFjdCAtaW5wdXQgZGF0YS9ubG1jYXRhbG9nX3Jlc3VsdF9jdXJyZW50bHlpbmRleGVkLnhtbCAtcGF0dGVybiBOQ0JJQ2F0YWxvZ1JlY29yZCAtZWxlbWVudCBJU1NOTGlua2luZyAtZGVmICduYScgLXNlcCAnICcgLWJsb2NrIFRpdGxlQWx0ZXJuYXRlL1RpdGxlIC1pZiBUaXRsZUFsdGVybmF0ZS9UaXRsZUBTb3J0IC1lcXVhbHMgTiAtZWxlbWVudCBUaXRsZUFsdGVybmF0ZS9UaXRsZSAgPiBkYXRhL25sbWNhdGFsb2cuY3N2IFxuIiAtLT4KCjwhLS0gLXNlcCAnXHQnICAtLT4KCgo8IS0tIE5MTUNhdGFsb2dSZWNvcmQvTmxtVW5pcXVlSUQgSVNTTkxpbmtpbmcgLS0+Cgo8IS0tIGBgYHtyIG5sbWNhdGFsb2csIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9IC0tPgo8IS0tIG15VGVybSA8LSByc3R1ZGlvYXBpOjp0ZXJtaW5hbENyZWF0ZShzaG93ID0gRkFMU0UpIC0tPgo8IS0tIHJzdHVkaW9hcGk6OnRlcm1pbmFsU2VuZCggLS0+CjwhLS0gbXlUZXJtLCAtLT4KPCEtLSAieHRyYWN0IC1pbnB1dCBkYXRhL25sbWNhdGFsb2dfcmVzdWx0X2N1cnJlbnRseWluZGV4ZWQueG1sIC1wYXR0ZXJuIE5DQklDYXRhbG9nUmVjb3JkIC10YWIgJ3wnIC1lbGVtZW50IE5MTUNhdGFsb2dSZWNvcmQvTmxtVW5pcXVlSUQgLWJsb2NrIElTU05MaW5raW5nIC10YWIgJ3wnIC1lbGVtZW50IElTU05MaW5raW5nIC1ibG9jayBUaXRsZSAtaWYgVGl0bGVAU29ydCAtZXF1YWxzIE4gLWRlZiAnbmEnIC10YWIgJ3wnIC1lbGVtZW50IFRpdGxlQWx0ZXJuYXRlL1RpdGxlID4gZGF0YS9ubG1jYXRhbG9nLmNzdiBcbiIgLS0+CjwhLS0gKSAtLT4KPCEtLSBTeXMuc2xlZXAoMSkgLS0+CjwhLS0gcmVwZWF0IHsgLS0+CjwhLS0gU3lzLnNsZWVwKDAuMSkgLS0+CjwhLS0gaWYgKHJzdHVkaW9hcGk6OnRlcm1pbmFsQnVzeShteVRlcm0pID09IEZBTFNFKSB7IC0tPgo8IS0tIHByaW50KCJDb2RlIEV4ZWN1dGVkIikgLS0+CjwhLS0gYnJlYWsgLS0+CjwhLS0gfSAtLT4KPCEtLSB9IC0tPgoKPCEtLSBgYGAgIC0tPgoKCjwhLS0gYGBge3J9IC0tPgo8IS0tIGxpYnJhcnkocmVhZHIpIC0tPgo8IS0tIG5sbWNhdGFsb2cgPC0gcmVhZF9kZWxpbSgiZGF0YS9ubG1jYXRhbG9nLmNzdiIsICAtLT4KPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsaW0gPSAifCIsIC0tPgo8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICBlc2NhcGVfZG91YmxlID0gRkFMU0UsIC0tPgo8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfbmFtZXMgPSBGQUxTRSwgIC0tPgo8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICB0cmltX3dzID0gVFJVRSkgLS0+Cgo8IS0tIGBgYCAtLT4KCjwhLS0gYGBge3J9IC0tPgoKPCEtLSBsaWJyYXJ5KHhtbDIpIC0tPgo8IS0tIGRhdGEgPC0gcmVhZF94bWwoImRhdGEvbmxtY2F0YWxvZ19yZXN1bHRfY3VycmVudGx5aW5kZXhlZC54bWwiKSAtLT4KCjwhLS0gIyBQb2ludCBsb2NhdGlvbnMgLS0+CjwhLS0gcG9pbnQgPC0gZGF0YSAlPiUgeG1sX2ZpbmRfYWxsKCIvL3BvaW50ZXIiKSAtLT4KPCEtLSBwb2ludCAlPiUgeG1sX2F0dHIoImxhdGl0dWRlIikgJT4lIGFzLm51bWVyaWMoKSAtLT4KPCEtLSBwb2ludCAlPiUgeG1sX2F0dHIoImxvbmdpdHVkZSIpICU+JSBhcy5udW1lcmljKCkgLS0+Cgo8IS0tICMgU3RhcnQgdGltZSAtLT4KPCEtLSBkYXRhICU+JSAgLS0+CjwhLS0gICB4bWxfZmluZF9hbGwoIi8vc3RhcnQtdmFsaWQtdGltZSIpICU+JSAgLS0+CjwhLS0gICB4bWxfdGV4dCgpIC0tPgoKPCEtLSAjIFRlbXBlcmF0dXJlIC0tPgo8IS0tIGRhdGEgJT4lICAtLT4KPCEtLSAgIHhtbF9maW5kX2FsbCgiLy90ZW1wZXJhdHVyZVtAdHlwZT0naG91cmx5J10vdmFsdWUiKSAlPiUgIC0tPgo8IS0tICAgeG1sX3RleHQoKSAlPiUgIC0tPgo8IS0tICAgYXMuaW50ZWdlcigpIC0tPgoKCgo8IS0tIGBgYCAtLT4KCgo8IS0tIC0tLSAtLT4KCjwhLS0gIyMgUmVzdWx0cyAtLT4KCjwhLS0gLSBQdWJNZWQnZGUgKipgciBtaW4oVHVya2V5QWxsWyw0XSwgbmEucm0gPSBUUlVFKWAtYHIgbWF4KFR1cmtleUFsbFssNF0sIG5hLnJtID0gVFJVRSlgKiogdGFyaWhsZXJpIGFyYXPEsW5kYSwgKlTDvHJraXllKiBhZHJlc2xpICoqYHIgZGltKFR1cmtleUFsbClbMV1gKiogYWRldCB5YXnEsW4gbWV2Y3V0dHVyLiAtLT4KCjwhLS0gLSBQdWJNZWQnZGUgKipgciBtaW4oVHVya2V5QWxsWyw0XSwgbmEucm0gPSBUUlVFKWAtYHIgbWF4KFR1cmtleUFsbFssNF0sIG5hLnJtID0gVFJVRSlgKiogdGFyaWhsZXJpIGFyYXPEsW5kYSwgKlTDvHJraXllKiBhZHJlc2xpIHlhecSxbmxhciAqKmByIGRpbSh1bmlxdWVKb3VybmFscylbMV1gKiogZmFya2zEsSBkZXJnaWRlIHlhecSxbWxhbm3EscWfdMSxci4gLS0+CgoKCgoKPCEtLSAtLS0gLS0+Cgo8IS0tICMjIERpc2N1c3Npb24gLS0+Cgo8IS0tIHTDvHJraXllIGFkcmVzbGkgb2x1cCBkYSBwdWJtZWRkZSB5ZXIgYWxhbiBtYWthbGVsZXIgaGFuZ2kgZGVyZ2lsZXJkZSBrYcOnYXIgYWRldCB5YXnEsW5sYW5txLHFnyAtLT4KCgo8IS0tIFRoZSByZXRyaWV2ZWQgaW5mb3JtYXRpb24gd2FzIGNvbXBpbGVkIGluIGEgdGFibGUuIC0tPgoKCgoKCjwhLS0gKipNZXRob2RzOioqIC0tPgoKCgoKCgoKCgo8IS0tICoqUmVzdWx0OioqIC0tPgoKCjwhLS0gYGBge3IgcGxvdCAxfSAtLT4KPCEtLSBnZ3Bsb3QoZGF0YSA9IGFydGljbGVzX3Blcl9qb3VybmFsLCBhZXMoeCA9IEpvdXJuYWwsIHkgPSBuLCBncm91cCA9IENvdW50cnksIC0tPgo8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBDb3VudHJ5LCBzaGFwZSA9IENvdW50cnksIC0tPgo8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBDb3VudHJ5IC0tPgo8IS0tICkpICsgLS0+CjwhLS0gICAgIGdlb21fcG9pbnQoKSArIC0tPgo8IS0tICAgICBsYWJzKHggPSAiSm91cm5hbHMgd2l0aCBkZWNyZWFzaW5nIGltcGFjdCBmYWN0b3IiLCB5ID0gIk51bWJlciBvZiBBcnRpY2xlcyIpICsgLS0+CjwhLS0gICAgIGdndGl0bGUoIlBhdGhvbG9neSBBcnRpY2xlcyBQZXIgSm91cm5hbCIpICsgIC0tPgo8IS0tICAgICB0aGVtZShwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gMC41KSwgLS0+CjwhLS0gICAgICAgICAgIGF4aXMudGV4dC54PWVsZW1lbnRfYmxhbmsoKSkgLS0+Cgo8IS0tIGBgYCAtLT4KCgo8IS0tICoqQ29tbWVudDoqKiAtLT4KCgoKCjwhLS0gLS0tIC0tPgoKCjwhLS0gIyMgRmVlZGJhY2sgLS0+Cgo8IS0tIFtTZXJkYXIgQmFsY8SxLCBNRCwgUGF0aG9sb2dpc3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9zYmFsY2kpIHdvdWxkIGxpa2UgdG8gaGVhciB5b3VyIGZlZWRiYWNrOiBodHRwczovL2dvby5nbC9mb3Jtcy9ZakdaNURIZ3RQbFIxUm5CMyAtLT4KCjwhLS0gVGhpcyBkb2N1bWVudCB3aWxsIGJlIGNvbnRpbmlvdXNseSB1cGRhdGVkIGFuZCB0aGUgbGFzdCB1cGRhdGUgd2FzIG9uIGByIFN5cy5EYXRlKClgLiAtLT4KCjwhLS0gLS0tIC0tPgoKPCEtLSAjIyBCYWNrIHRvIE1haW4gTWVudSAtLT4KCjwhLS0gW01haW4gUGFnZSBmb3IgQmlibGlvZ3JhcGhpYyBBbmFseXNpc10oaHR0cHM6Ly9zYmFsY2kuZ2l0aHViLmlvL3B1Ym1lZC9CaWJsaW9ncmFwaGljU3R1ZGllcy5odG1sKSAtLT4KCjwhLS0gLS0tIC0tPg==